<!-- 专家列表组件 -->
<template>
  <!-- 专家列表整体容器 -->
  <div class="goods-box4">
    <!-- 搜索区域，内容居中显示 -->
    <div class="search" style="text-align:center">
      <!-- 输入框，双向绑定搜索关键词，最大输入长度 100，可清空输入 -->
      <el-input v-model="searchValue" maxlength="100" clearable style="width:290px;"/>
      <!-- 搜索图标，点击触发搜索方法 -->
      <img src="../../assets/img/search.png" @click="handleSearch" class="search-icon"/>
    </div>
    <!-- 循环渲染专家列表，根据索引设置最后一个元素没有下边框 -->
    <div class="goods" v-for="(item, index) in cgoods"
         :style="index===cgoods.length-1?'':'border-bottom:1px solid #f2f2f2;'" :key="index">
      <!-- 专家头像，路径由状态管理中的图片路径拼接 -->
      <img :src="$store.state.imgShowRoad + '/file/' + 'experta.png'" alt=""/>
      <!-- 专家信息区域 -->
      <div class="info">
        <!-- 显示专家姓名和职称 -->
        <p class="content">
          <span style="margin-right:50px;">专家姓名：{{ item.realName }}</span>
          <span>职称：{{ item.position }}</span>
        </p>
        <!-- 显示专家从事专业和联系电话 -->
        <p class="content">
          <span>从事专业：{{ item.profession }}</span>
          <span>联系电话：{{ item.phone }}</span>
        </p>
        <!-- 显示专家所属单位 -->
        <p class="content">
          <span>单位：{{ item.belong }}</span>
        </p>
      </div>
      <!-- 操作按钮区域 -->
      <div class="info2">
        <!-- 点击向专家提问，触发对应方法 -->
        <span class="question-btn" @click="handleQuestion(item)" style="margin-right:20px;">向我提问</span>
        <!-- 点击线下预约，触发对应方法 -->
        <span class="question-btn" @click="handleAppoint(item)">线下预约</span>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  // 组件数据
  data() {
    return {
      // 搜索关键词
      searchValue: ''
    };
  },
  // 过滤器，用于格式化时间
  filters: {
    formatTimer: function (value) {
      // 根据传入的值创建 Date 对象
      let date = new Date(value);
      // 获取年份
      let y = date.getFullYear();
      // 获取月份，月份从 0 开始，所以加 1
      let MM = date.getMonth() + 1;
      // 月份小于 10 时补 0
      MM = MM < 10 ? "0" + MM : MM;
      // 获取日期
      let d = date.getDate();
      // 日期小于 10 时补 0
      d = d < 10 ? "0" + d : d;
      // 获取小时
      let h = date.getHours();
      // 小时小于 10 时补 0
      h = h < 10 ? "0" + h : h;
      // 获取分钟
      let m = date.getMinutes();
      // 分钟小于 10 时补 0
      m = m < 10 ? "0" + m : m;
      // 获取秒数
      let s = date.getSeconds();
      // 秒数小于 10 时补 0
      s = s < 10 ? "0" + s : s;
      // 返回格式化后的时间字符串，不包含秒
      return y + "-" + MM + "-" + d + " " + h + ":" + m;
    },
  },
  // 组件接收的属性
  props: {
    cgoods: {
      // 属性类型为数组
      type: Array,
    },
  },
  // 组件方法
  methods: {
    // 点击详情，更新订单 ID 并跳转到详情页
    detailsClick(item) {
      this.$store.commit("updateOrderId", item);
      this.$router.push("/home/details").catch((err) => err);
    },
    // 点击向专家提问，携带专家用户名跳转到提问页
    handleQuestion(item) {
      this.$router.push(`/home/question?id=${item.userName}`).catch((err) => err);
    },
    // 点击线下预约，携带专家用户名跳转到预约页
    handleAppoint(item) {
      this.$router.push(`/home/appointment?id=${item.userName}`).catch((err) => err);
    },
    // 点击搜索图标，触发父组件的搜索方法并传递搜索关键词
    handleSearch() {
      this.$emit('handleSearch', this.searchValue)
    }
  },
};
</script>

<style lang="less" scoped>
/* 搜索区域样式 */
.search {
  height: 60px;
  background-color: white;
  padding: 10px 20px;
  margin-top: 10px;
  /* 搜索图标样式 */

  .search-icon {
    position: relative;
    bottom: 2px;
    left: -2px;
    cursor: pointer;
  }
}

/* 专家列表整体容器样式 */
.goods-box4 {
  background-color: #fff;
  width: 1100px;
  margin: 0 auto;
  /* 单个专家信息项样式 */

  .goods {
    width: 1100px;
    height: 110px;
    padding: 10px 20px;
    background-color: white;
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    /* 专家头像样式 */

    img {
      width: 100px;
      height: 100px;
      margin-right: 20px;
      border-radius: 6px;
    }

    /* 专家信息区域样式 */

    .info {
      width: 800px;
      margin-top: 10px;
      font-size: 14px;
      /* 发起人信息样式 */

      .initiator {
        color: #666;
      }

      /* 标题样式，超出部分用省略号显示 */

      .title {
        /*超出的部分隐藏*/
        overflow: hidden;
        /*文字用省略号替代超出的部分*/
        text-overflow: ellipsis;
        /*弹性伸缩盒子模型显示*/
        display: -webkit-box;
        /*限制在一个块元素显示文本的行数*/
        -webkit-line-clamp: 1;
        /*设置或检索伸缩盒对象的子元素排列方式*/
        -webkit-box-orient: vertical;
      }

      /* 内容样式，超出部分用省略号显示 */

      .content {
        height: 20px;
        /*超出的部分隐藏*/
        overflow: hidden;
        /*文字用省略号替代超出的部分*/
        text-overflow: ellipsis;
        /*弹性伸缩盒子模型显示*/
        display: -webkit-box;
        /*限制在一个块元素显示文本的行数*/
        -webkit-line-clamp: 7;
        /*设置或检索伸缩盒对象的子元素排列方式*/
        -webkit-box-orient: vertical;
      }

      /* 价格样式 */

      .price {
        font-weight: bold;
        display: block;
        color: red;
      }
    }
  }
}

/* 操作按钮区域样式 */
.info2 {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: flex-end;
  /* 操作按钮样式 */

  .question-btn {
    cursor: pointer;
    color: #67C23A;
    /* 鼠标悬停样式 */

    &:hover {
      text-decoration: underline;
      color: #035D1C;
    }
  }
}

/* 搜索输入框样式 */
.search /deep/ .el-input--suffix .el-input__inner {
  height: 35px;
  line-height: 35px;
}
</style>